Printer driver filter and method of printing with the same

ABSTRACT

A computer device including: a loading unit configured to load an updatable stored print option from a predetermined storage unit; a display unit configured to display a user interface based on the loaded print option; a receiving unit configured to receive an instruction from an operator via the user interface, wherein the instruction includes a selected print option; and an executing unit configured to execute the instruction.

CROSS-REFERENCE TO RELATED APPLICATION

The present continuation application claims the benefit of priorityunder 35 U.S.C. §120 to application Ser. No. 10/781,670, filed Feb. 20,2004 now U.S. Pat. No. 7,423,769, which is a divisional application ofapplication Ser. No. 09/432,409, filed on Nov. 2, 1999 now U.S. Pat. No.6,707,568, the entire contents of both are hereby incorporated herein byreference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a printer which is capable of printinga plurality of user-specified print jobs, and more particularly to acomputer program product which filters a standard printer data stream toperform the user-specified print job. The present invention also relatesto a graphic user interface which may be included with the computerprogram product.

2. Discussion of the Background

One of the increasing demands placed on computer related equipment inboth the home, school and work environments is an increased flexibilityto perform a variety of tasks. Currently, printers are utilized to printreports, facsimiles, books, pamphlets, overlays, labels, graphics, etc.Each of these items are best presented in a unique user-specified formaton papers and/or materials as decided by the user.

Currently, each printer includes a printer driver which is loaded onto acomputer. Then, a user of the computer can print a selected document orother item using the printer's printer driver. However, printermanufacturers are constantly required to update printer drivers to meetthe expanding market needs, which results in higher costs.

Further, a user using a particular printer is limited in the amount ofprint options. For example, standard print drivers allow a user to printon different paper sizes, to print in a landscape or portrait format,etc. Thus, with a standard print driver, the user is limited to theseoptions. However, consumers require a printer which is capable ofprinting a variety of print jobs. Currently, printer manufacturersintermittently develop new print drivers in an attempt to meet thisdemand.

In more detail, FIG. 1 illustrates a conventional set-up of a computer 2and a printer 6 attached via a cable and/or other network 4. The printer6 includes a connection port 7 for attaching the cable and/or othernetwork 4 to the printer 6. Thus, a user using the computer 2 can selectan item or other object to be printed on the printer 6.

FIG. 2 illustrates a block diagram of a conventional application 10interfacing the printer 6. The conventional application 10 is hosted onan operating system 14 resident on the computer 2. When the user invokesa print command from the application 10, the document or other item tobe printed is communicated to a printer driver 12. The printer driver 12is a printer and operating system specific software interface. Theoperating system 14 sends signals in accordance with instructions fromthe printer driver 12 to the printer port and/or network card 18 via aconnection 16, thus placing signals corresponding to the document orother item to be printed on the cable and/or other network 4 connectedto the printer 6.

However, as discussed above, the print options available to the user arelimited to those which are supplied with the printer driver 12 loadedonto the computer 2. Thus, if the user wishes to have a print optionwhich is not included in the printer driver 12, the user must purchaseor obtain and load onto the computer 2 a new printer driver having thedesired print option. This is disadvantageous because the installationand configuration of a printer driver on a computer is cumbersome,time-consuming, and generally requires special instructions and/or aqualified technician.

SUMMARY OF THE INVENTION

Accordingly, one object of the present invention is to solve theabove-noted problems.

Another object of the present invention is to provide a printer which iscapable of printing a plurality of user-specified print jobs.

Yet another object of the present invention is to provide a computerprogram product, which filters a standard printer data stream to performthe user-specified print job.

Still another object of the present invention is to provide a graphicuser interface which may be included with the computer program product.

Another object of the present invention is to provide a method ofprinting using a computer program product which filters the standardprint data stream to perform the user-specified print job.

To achieve these and other objects, the present invention provides afilter which filters a standard printer data stream to perform auser-specified print job. The filter is typically a computer program,which receives data output from a printer driver, filters or transformsthe received data in some desired way, and then outputs the filtered ortransformed data stream to the printer.

The present invention also provides a graphical user interface to assista user in operating the computer program. In particular, the graphicaluser interface according to the present invention includes a pluralityof pop-up menus having various display controls to control the operationof the computer program.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete appreciation of the invention and many of the attendantadvantages thereof will be readily obtained as the same becomes betterunderstood by reference to the following detailed description whenconsidered in connection with the accompanying drawings, wherein:

FIG. 1 illustrates a conventional computer connected to a printer;

FIG. 2 is a block diagram illustrating functional components and datapassed between a software application and a printer;

FIG. 3A is a block diagram illustrating functional components and datapassed between a software application and a printer according to thepresent invention;

FIG. 3B is another block diagram illustrating functional components anddata passed between a software application and a printer according tothe present invention;

FIG. 4A illustrates a filtered printer data stream according to thepresent invention;

FIG. 4B is flowchart illustrating the steps performed by a computerprogram product according to the present invention;

FIG. 5 is a flowchart illustrating a general overview of the steps ofprinting a file according to the present invention;

FIG. 6 is a flowchart illustrating the steps of selecting a filteraccording to the present invention;

FIG. 7A is a printer properties dialog according to the presentinvention;

FIG. 7B is a filter executable file selection dialog according to thepresent invention;

FIG. 7C is another filter executable file selection dialog according tothe present invention;

FIG. 7D is a parameters dialog for a transparency-interleave computerprogram product according to the present invention;

FIG. 7E is a parameters dialog for a computer program product accordingto the present invention which masks words/clauses on a printeddocument;

FIGS. 8A-8F are examples of output documents produced by computerprogram products according to the present invention;

FIG. 9 is a flowchart illustrating the steps performed after a userselects the “Preview Result” push button shown in FIG. 7A;

FIG. 10 is a flowchart illustrating the steps performed after a userselects the “What's this filter” push button shown in FIG. 7A; and

FIG. 11 is a flowchart illustrating the steps performed after a userselects the “Edit Filter Script” push button shown in FIG. 7A.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

According to the present invention, it is possible to select a filtercorresponding to a desired print option, and then print a document orother item based on this filter. A filter is typically a computerprogram which may access other programs or data files. In addition, afilter may be a program or set of features within a program that reads astandard or designated input, transforms the input in some desired way,and then outputs the filtered or transformed information. For example,the filter may be used to print date/time stamps as footnotes, printbook pages, cover out confidential words or clauses in a document, printplural pages on a tabloid size paper, interleave transparencies withpaper, perform debugging operations, etc. Examples of output productsproduced by filters according to the present invention are illustratedin FIGS. 8A-8F and will be described in more detail later.

The filter according to the present invention is not limited to theseoptions, but may include a variety of options, thereby presenting theuser with great flexibility to print a variety of documents, layouts,types, etc. Further, the printer manufacturer is also benefitted as itmay produce a standardized printer driver and provide a plurality offilters to tailor the printer driver to a user's need and the currentmarket demand. This saves the printing manufacturer in having toconstantly upgrade printer drivers to meet market demands.

Referring now to the drawings, wherein like reference numerals designateidentical or corresponding parts throughout the several views, FIG. 3Aillustrates one example according to the present invention in which afilter 20 receives data output from a printer driver 12, filters thedata, and then outputs the filtered data to a network card 18 via anoperating system 14 and connection 16. Also shown is a bypass connection13, which allows a user to print without using the filter 20. That is,if the user selects an object to be printed by an application 11, butdoes not select a use of the filter 20, the printer driver 12 sendssignals directly to the printer port or network card 18 via the bypassconnection 13.

FIG. 3B is another example of the filter 20, in which the filter 20receives data output from the printer driver 12, filters the data, andthen outputs the filtered data stream back to the printer driver 12. Theprinter driver 12 then transmits the filter data to the network card 18via the operating system 14 and connection. This example eliminates theneed for the bypass connection 13 shown in FIG. 3A.

The filter 20 is an executable program which may be loaded onto acomputer 3 via a computer storage medium, such as a CD-ROM, tape, diskor memory chip/card, an Internet server, or other remote computer orstorage device, or may reside on a server controlling a plurality ofcomputers networked to the printer. The filter 20 and the operation ofselecting the same will now be explained in more detail.

FIG. 4A illustrates a printer data stream 22 output from the printerdriver 12, and a filtered data stream 24, which has been filtered by thefilter 20. FIG. 4 shows, for purposes of illustration only, adescription of a filter 20 which interleaves paper between consecutivetransparencies. Thus, the transparencies do not stick together and canbe easily separated because they are interleaved with paper. Further, ifthe item to be printed is printed on both the transparency and theinterleaved paper, the user may display the transparency to an audiencevia an overhead display during a presentation and simultaneously viewthe item to be printed on the interleaved printed paper.

As shown, the printer data stream 22 includes the commands “PRTR X5,”which is a printer instruction to print five transparencies. The printerinstruction “PRTR X5” is used for illustration purposes only. That is,actual Postscript instructions to print five transparencies issignificantly more detailed and has been omitted for simplicity. Note,Postscript is a printer description language (PDL) used to communicatewith printers. Other PDLs may be used, such as PCL6 developed by HewlettPackard.

The filter 20 receives and filters the printer data stream 22 accordingto the executable filter program. That is, as shown in FIG. 4A, thefiltered data stream 24 includes the printer data stream 22 interleavedwith printer commands “INT 5.” The printer commands “INT 5” is a printerinstruction instructing the printer to print interleaved pages betweenthe transparencies. Again, the printer instruction “INT 5” is usedmerely as an example. In this case, a document or other item to beprinted is printed only on the transparencies. The filtered data stream24 is then sent to the printer 6, and the printer 6 prints, for example,five transparencies with paper interleaved therebetween. The filter 20may also filter the printer data stream 22 so as to instruct the printerto print the document or other item on both the transparencies and theinterleaved paper. In other words, the user may choose to interleave thetransparencies with a blank page paper or a copied page paper.

FIG. 4B is a flowchart illustrating the steps performed by a filter. Inparticular, the selected filter 20 reads a corresponding script file andretrieves any necessary parameters or information (Step S94). Thecorresponding script file is discussed in more detail later. If thecorresponding script file is not successfully read (No in Step S96), anerror dialog is popped up on the display of the computer 3 notifying theuser of this error (Step S98). If the read operation was successful (Yesin Step S96), the selected filter 20 reads and saves a printer datastream output from the printer driver 12 (Step S100). If the printeroutput data is successfully read without any errors (Yes in Step S102),the filter 20 filters the received output data stream (Step S104)according to the corresponding executable filter program (i.e., thefilter). If the data is not successfully read (No in Step S102), anerror dialog is popped up on a display of the computer 3 notifying theuser of this error (Step S112) and the operation ends. After the data isfiltered by the filter 20, the filtered output data stream istransmitted to the printer 6 via the operating system 14, connection 16,network card 18, and network 4 (Step S108).

It is possible to determine whether or not data was successfully read byusing, for example, standard input/output functions provided with acomputer programming language. For example, the C/C++ programminglanguage includes a standard “fread( )” function which may be used toread the printer data stream. If an error occurs during the “fread( )”function, an error value of zero, for example, is returned. Thus, usingthis returned value, it is possible to determine whether or not the datais successfully read.

In addition, the filter 20 filters the printer data stream based oninstructions corresponding to a user-specified print operation. Forexample, to print documents similar to that shown in FIG. 8F, the usermay select a filter 20 called sandwich.exe. The filter 20 then scans thesaved printer data stream for collate and duplex commands (e.g.,Postscript commands). The filter 20 also retrieves the total pagenumbers to be printed and determines if the total number of pages issufficient to perform the sandwich.exe filter products shown in FIG. 8F.That is, if the total page number is less than three, for example, itmay not be possible to sandwich three pages between a cover page and aback page (i.e., this would require a total of at least five pages).Other error processing and validation checks may be readily achieved byappropriate computer instructions. After the filter 20 performs theappropriate error processing/validation checks, the filter 20 filtersthe printer data stream. For example, to achieve the documents shown inFIG. 8F for a non-duplex copy mode, the filter 20 inserts the traynumber one (e.g., a Postscript command corresponding to tray #1)immediately after the page number one in the saved printer data stream.In addition, the filter 20 inserts tray number two (e.g., a Postscriptcommand corresponding to tray #2) after the second page number in thesaved printer data stream. Finally, the filter 20 inserts tray numberthree (e.g., a Postscript command corresponding to tray #3) after thefourth page number in the saved printer data stream. Then, the filteredprinter data stream is transmitted to the printer and the first pagenumber is printed from tray #1, the second and third page numbers areprinted from tray #2, and the fourth page is printed from tray #3.

Further, the error dialogs discussed above (i.e., in Steps S98 and S112)display information about the particular error which occurred. Forexample, if the data stream from the printer driver 12 is notsuccessfully read, an error dialog may contain text that enables a userto troubleshoot the error. In addition, a user may select a “PreviewResult” push button 52 shown in FIG. 7A to determine if an output datastream was properly filtered and transmitted to the printer. This isdescribed in more detail later.

FIG. 5 is a flowchart illustrating a general overview on how to print afile according to the present invention. First, a user selects a filter(Step S30) and then prints the file (Step S90). The selection of afilter will now be described in more detail with reference to FIGS. 6and 7A-7E.

First, a user selects a printer properties dialog 50 shown in FIG. 7A(Step S32 in FIG. 6). Selection of a printer properties is accomplishedby, for example, selecting the “Start”; “Settings”; “Printers” displayregions on a main menu bar in the Windows 95 operating environment, andthen selecting “Properties” dialog for a desired printer (e.g., byclicking the right mouse on the desired printer). One example of adifference between the printer properties dialog 50 and a conventionalprinter properties dialog is a filter tab 58. The properties dialog 50may also pop up on computer's display when the user opts to print afile. Then, the user selects the filters tab 58 (Step S34 in FIG. 6)from the printer properties dialog 50.

After the user selects the filters tab 58, there are three availablechoices (paths A, B and C in Step S35). The first choice (path A) is toselect a filter from a first filter selection box 51 (Step S36), whichidentifies a list of predetermined filters, such as a list of the lastfilters selected or a list of default filters. If the user wants to useone of the filters identified in the first filter selection box 51, theuser need only highlight (i.e., select) the desired filter via a mouseor other pointing device.

The user may then select the Apply push button 60 and/or OK push button64 (Step S40). The Apply push button 60, Cancel push button 62 and OKpush button 64 are default push buttons supplied with a windowprogramming package, such as a window program package sold under thetrademark VISUAL BASIC, or other window system.

If, however, the user wishes to select a filter not shown in the firstfilter selection box 51, the user may select a second filter selectionbox 56 (Step S38). The second filter selection box 56 allows the user tomanually navigate through the directories on the computer to select adesired filter. When the user selects the second filter selection box56, a filter selection dialog 70, shown in FIG. 7B, pops up on thedisplay of the computer 3. The user may then select a filter from one ofthe corresponding filters listed in a filters window 72 (Step S39). Theuser may also select a third filter selection box 55 (Step S37). Thisselection pops up a filter selection dialog 80 shown in FIG. 7C, whichlists all of the available filters. The user need only then select adesired filter from the list of available filters (Step S41). The usermay then select the AF ply push button 60 and/or OK push button 64 (StepS40) shown in FIGS. 7A, 7B and 7C to enable the respective filter.

In addition, referring to FIG. 7A, when the first, second or thirdfilter selection boxes 51, 55 and 56 are selected, a “What's thisfilter” push button 54 and “Edit Filter Script” push button 53 arevisible, indicating that these push buttons are capable of beingselected (note the push buttons 54 and 53 are not highlighted and thefilter selection boxes 51 and 56 are also not selected in FIG. 7A). Ifthe “What's This Filter” push button 54 is selected, a help dialog popsup on the display and provides a user with general information about theselected filter, which is described in more detail with reference to theflow chart of FIG. 10. If the “Edit Filter Script” push button 53 isselected, the user is able to modify a filter script file associatedwith the selected filter, which is described in more detail withreference to the flow chart of FIG. 11. The “Preview Result” push button52 is visible after a user has selected a filter and printed a documentor other item using the filter, and allows the user to preview theresult of the filtered printer command transmitted to the printer. Thus,the user is able to troubleshoot or debug a particular print operation.A more detailed description of the “Preview Result” push button 52 isdescribed later with reference to the flow chart of FIG. 9. Further, the“What's This Filter” push button 54, “Preview Result” push button 52 and“Edit Filter Script” push button 53 are illustrated only in FIG. 7A, butmay also be included in the dialogs 70, 80 shown in FIGS. 7B and 7C.

Turning now to the filter selection dialog 70 shown in FIG. 7B. Toselect a filter from this dialog, the user may select an appropriatefolder from a directory window 74 and a disk drive window 76, therebyaccessing all of the available filters in that particular directory onthe computer 3. The available filters shown in the filters window 72include: 1) “Add printing date/time stamp as footnote” which maycorrespond to an executable named date-time.exe, 2) “Booklet bindingoutput stack” which may correspond to an executable named booklet.exe,3) “Cover out confidential words/clauses” which may correspond toexecutable named confidential.exe, 4) “Tabloid size duplex 4 page-upsignature” which may correspond to an executable named tabloid.exe, 5)“Transparency with paper interleaving” which may correspond to anexecutable named interleave.exe, 6) Application ABC debugging” which maycorrespond to an executable named debug-app.exe, and 7) “Debug driverdetect XYZ” which may correspond to an executable nameddebug-driver.exe. The debug-app.exe filter is, for example, a patch tofix a specific application, and the debug-driver.exe filter is a patchto fix a specific printer driver debug. The debug-app.exe anddebug-driver.exe filters may be developed by an end-user, or be providedby the application's vendor. The purpose of the debug applications areto troubleshoot problems when an application or driver sends commands tothe printer which are inaccurate or need debugging. However, the presentinvention is not limited to these filters. That is, other filters may beincluded in this directory, and thus be available for the user toselect. Also shown is a help push button 73 that may be selected to viewhelp information about the particular filter highlighted in the filterswindow 72 (i.e., a help dialog pops up on the display providing helptext about the selected filter). A Back push button 75 and a Next pushbutton 77 respectively allow the user to toggle back to the parentdialog (i.e., the printer properties dialog 50 shown in FIG. 7A) or to achild dialog (not shown). Further, an Exit toggle button 79 allows theuser to exit the filter executable file selection dialog 70.

In addition, the filters shown in the filter window 72 are thoseresident in the specified directory of the computer. However, thefilters may be resident on a server controlling a plurality of computersnetworked to the printer or be resident on the actual printer, forexample. If the desired filter resides on the server, for example, theuser may select a Network push button 86, at which time a filterexecutable file selection window (not shown, but similar to the oneshown in FIG. 7B) will pop up on the display. Thus, using this selectionwindow, the user may select a particular filter resident on the server.Similarly, a user may select a Printer push button 88 to select aparticular filter resident on the printer's hard disk (not shown). Alsoshown are an OK push button 64 and Apply push button 60. These pushbuttons operate in a same fashion as that described for FIG. 7A.

FIG. 7C illustrates the filter selection dialog 80, which pops up on thedisplay when the user selects the third filter selection box 55 shown inFIG. 7A. The filter selection dialog 80 includes a “filter executable”display region 81, a “path name” display region 82 and a “filter name”display region respectively corresponding to the name of the filterexecutable file, directory path name of the filter executable, and auser-friendly name of the filter executable file. The dialog 80 displaysall of the available filters resident on the computer, but may also beconfigured to display the files resident on the printer and/or servercontrolling the printer. In the example shown in FIG. 7C, all theavailable filters reside in the directory “C:\Print App\Filters.”However, a computer program may be used which searches other directoriesfor filters and these filters may also be displayed in till: dialog 80.The OK push button 64, Cancel push button 62 and Apply push button 60are the same as that discussed previously. That is, to select a filterdisplayed in the dialog 80, the user need only highlight a filter andselect the Apply push button 60 and OK push button 64.

In addition, in some instances, a parameters window 90, 91 (see FIGS. 7Dand 7E) pops up on the display after the user selects a filter, if theparticular filter requires additional parameters. For example, theparameters window 90 in FIG. 7D corresponds to theinterleave-transparencies filter, and prompts the user for additionalparameters, such as a tray to use for the interleaved papers and a trayto use for the transparencies. This information may be input by a“select transparency tray” box 92 and a “select separation paper tray”box 94. The Cancel push button 98 and OK push button 96 are similar tothose discussed above. An additional input region (not shown) may beprovided to the parameters window 90, which allows the user to print adocument on both the transparency and the interleaved paper. Therefore,during a presentation, for example, the user may display thetransparency to an audience via an overhead display and simultaneouslyview the document on the interleaved printed paper.

As another example, the parameters window 91 shown in FIG. 7Ecorresponds to the confidential.exe filter, and prompts the user foradditional parameters, such as words and/or clauses to be masked on aprinted document. This information may be input using an input text box93. The Cancel push button 97 and OK push button 95 are similar to thosediscussed above. In this example, the user may print a document with thewords listed in the text box 93 masked, thus preventing an unauthorizeduser from reading the confidential words and/or clauses.

The dialogs shown in FIGS. 7A, 7B, 7C, 7D and 7E allow the user toselect a particular filter, and including radio buttons, push buttons,radio boxes, toggle buttons, etc., which are known manners of inputtingusing a graphic user interface package (e.g., VISUAL BASIC, X-windows,etc.). However, other suitable layouts may be used so that the user canconveniently select a particular desired filter and input any requiredparameters. As discussed above, the OK push button 64, Cancel pushbutton 62, and Apply push button 60 are generally known. The “What'sthis filter” push button 54, “Preview Result” push button 52, and “EditFilter Script” push button 53 are described later in more detail withreference to FIGS. 9, 10 and 11. In addition, the first, second andthird filter selection boxes 51, 56 and 55 are configured to deactivateafter a desired filter has been selected. Thus, each time a user wantsto print a document with a filter, a desired filter must be selected.Alternatively, a predetermined filter may be configured to always beactivated, for example, by storing in a memory the last filter selected.This may be useful for a user who successively prints with a particularfilter.

FIGS. 8A-8F are examples of printed documents corresponding toparticular filters according to the present invention. In particular,FIG. 8A illustrates printed book pages 100 which include four pagenumbers on each sheet of paper. Thus, a user may select a filter calledbooklet.exe, for example, and print documents as shown in FIG. 8A. Thedocuments may then be bound into a book. FIG. 8B illustrates a tabloidpaper 102 (i.e., 11″×17″, for example), on which two documents areprinted on a single side of the paper 102. Thus, a user may select afilter called tabloid.exe, for example, and print documents as shown inFIG. 8B. Further, FIG. 8B illustrates documents printed only on one sideof a page, but both sides may also be printed on (i.e., duplex copying).More than two documents may also be printed on either one side or bothsides of a page. FIG. 8C illustrates a printed document 104, whichincludes confidential words (e.g., a person's name) that are masked.Thus, a user may select a filter called confidential.exe, for example,and print documents as shown in FIG. 8C. The confidential words to bemasked may be included in an accessory file, which is read by theconfidential.exe executable filter. The accessory file is a text fileincluding a list of confidential words to be masked. Alternatively, theconfidential words to be masked may be included in a companion scriptfile, as discussed below. Further, the words to be masked may be inputin the parameter window 91 as shown in FIG. 7D and as discussed above.FIG. 8D illustrates a document 106 with the date and time printed as afootnote. Thus, a user may select a filter called date-time.exe, forexample, and print documents as shown in FIG. 8D. FIG. 8E illustratesdocuments 108, which include transparencies 109 interleaved with whitepaper 110. These output documents 108 correspond to a selected filtercalled interleave-transparencies.exe, for example. FIG. 8F illustratesdocuments 112 printed from a paper tray 1, documents 114 printed from apaper tray 2, and a back page 116 printed from a paper tray 3. In thisexample, the document 112 may be a cover page, documents 114 may be abody of a report and the document 116 may be a back page. Further, thedocument 112 may be a different color then that of the documents 114interleaved between the page 112 and back page 116. The particular traysto be printed from may be input into a parameters window, or be includedin an accessory file or script file. These output documents 112, 114,116 correspond to a selected filter called sandwich.exe for example.

As discussed above, the filter 20 is an executable program. Theexecutable program may be developed using any suitable programminglanguage, such as C, C++, FORTRAN, etc. The naming convention willdepend on the type of operating system. For example, a filter executablefile on an operating system, such as that used by Windows 95, may have afile name called booklet.exe. In addition, according to the presentinvention, the executable filter file may also include a companionscript file, as discussed above which has a similar base file name asthe executable file, but has a different extension name, such asbooklet.ftr. Likewise, the accessory file discussed above may have afilename “mask-words.ftr.” If the additional parameters (e.g.,confidential words to be masked) are included within the companionscript file, an accessory file may not be required. The companion scriptfile is a plain text file, which is read by the corresponding filterwhen the user selects the “What's this filter” push button 54, “PreviewResult” push button 52 or “Edit Filter Script” push button 53 in FIG.7A. The companion script file may also be read by the correspondingfilter when the user selects a filter which requires additionalparameters, such as confidential words to be masked. One typical exampleof a companion script file will now be explained with reference to Table1 below.

TABLE 1 Filter script file format Line # Contents Purposes 1 Filtertitle Filter identification 2 Filter Script File Editor Execute Editorto edit Filter with full path name Script file 3 Preview applicationExecute preview application to name with full preview the filtered data.path name 4- End Help Help text Customized Help facility Delimeter(e.g., #) 5. End Help Additional parameters Additional parameters forfilter, Delimeter (e.g., confidential words) (e.g. #) to EOF

The first line number 1 in the filter script file is the title of thefilter and is preferably limited to a predetermined length, such asforty characters long. The second line number 2 identifies a filterscript file editor, which is any editor that can edit a text file,including its full path name. The filter script file editor may be aMicrosoft WordPerfect application for example, and is executed when theuser selects the “Edit Filter Script” push button 53 in FIG. 7A. Thethird line number 3 identifies a preview application, including its fullpath name, which is activated when the user selects the “Preview Result”push button 52 in FIG. 7A. In addition, the fourth line number 4 to anend of help delimiter (e.g., #) is help text which is displayed when theuser selects the “What's this filter” push button 54 in FIG. 7A. Theline number from the end of help decimeter # to the end of file (EOF)contain additional parameters, such as confidential words to be masked,and may be read by the corresponding filter when the filter is selected.Alternatively, as discussed above, the additional parameters may beeither included in a separate accessory file, or may be input bydisplaying a parameters windows 96 or 91 shown in FIGS. 7D and 7E, forexample. If it is assumed the help text is N lines long (where N=0, 1, 2. . . ) the additional parameters would begin at line number N+5.Further, a value of N=0 means the end help delimiter it would be in line4 of the script file.

FIGS. 9 and 10 respectively illustrate a process which occurs when the“Preview Result” push button 52 and “What's this filter” push button 54are selected in FIG. 7A. When the “Preview Result” push button 52 isselected, the corresponding filter script file is opened (step S120 inFIG. 9). It is determined in Step S122, whether the file wassuccessfully opened. If the file was not opened successfully (No in Step122), an error dialog is popped up on the display explaining this errorto the user (Step S130). The determination as to whether or not the filewas successfully opened may be accomplished by using the standardinput/output routines provided with a programming language (similar tothat discussed for the fread( ) function. If the file was successfullyopened (Yes in Step S122), the third line 3 of the script file is readwhich identifies a directory path name of a preview application (StepS124). It is then determined in Step S126 if the read operation wassuccessful. If the read operation was not successful (No in Step S126),an error dialog is popped up explaining this error to the user (StepS132). If the read operation is successful (Yes in Step S126), thepreview application identified in line number 3 is executed (Step S120).Preview applications are software applications which allow the user toview the filtered printer data stream sent to the printer. Thus, theuser is able to debug or troubleshoot a particular print operation. Thepreview applications are generally integrated with the windows package,such as the one sold under the trademark POSTSCRIPT VIEWER integratedwith Windows 95.

FIG. 10 is similar to FIG. 9, but illustrates an operation which occurswhen the “What's this filter” push button 54 is selected in FIG. 7A.First, the corresponding filter script file is opened (Step S140), andit is determined in Step S142 if the open operation was successful. Ifthe operation was not successful (No in Step S142), an error dialog ispopped up explaining this error to the user (Step S152), if the openoperation was successful (Yes in Step S142), it is determined whetherthere is help text data in line number 4 to an end of the help delimiter“#” (Step S144). If there is no help text data (No in Step 144), anerror dialog is popped up explaining to the user that no help isavailable (Step S154). If there is help text available (Yes in StepS144), the help text is read (Step S146). Then it is determined in StepS148 if the read operation was successful. If the operation was notsuccessful (No in Step S148), an error dialog is popped up explainingthis to the user (Step S156). If the read operation is successful (Yesin Step S148), a help dialog is popped up displaying the help text readfrom the script file (Step S150). The user may then select a Cancel orOK push button on the help dialog and the operation ends. It may bedetermined if the corresponding script file was opened successfully,whether or not there is any help text available, and whether the readoperation was successful by using standard input/output functionsprovided with a programming language.

FIG. 11 illustrates a process which occurs when the added “Edit FilterScript” push button 53 is selected in FIG. 7A. When the “Edit FilterScript” push button 53 is selected, the corresponding filter script fileis opened (see Step S160). It is determined in Step S162, whether thefile was successfully opened, by using the standard input/outputroutines provided with the programming language. If the file was notopened successfully (NO in Step S162), an error dialogue is popped upexplaining this error to the user (Step S170). If the file wassuccessfully opened (YES in Step S162), the second line 2 of the scriptfile is read which identifies the directly pith name of a filter scriptfile editor, such as a Microsoft WordPerfect application (Step S164). Itis then determined in Step S166 if the read operation was successful. Ifthe read operation was not successful (NO in Step S166), an error dialogis popped up explaining this error to the user (Step S172). If the readoperation is successful (YES in Step S166), the filter script fileeditor identified in line number 2 is executed (Step S120). Thus, byselecting the Edit Filter Script push button 53, the user may change theparameters identified in the companion script file, for example. Again,it may be determined if the open and read operations were successful byusing standard input/output functions provided with a programminglanguage.

The computer program product (e.g., executable filter program,corresponding graphic user interface, companion script files, accessoryfiles, etc. stored in a memory) according to the present invention maybe sold separately or integrated with a word processing package, such asone sold under the trademark WORDPERFECT. Further, the filters accordingto the present invention may be sold independent of the printer driveror together with the printer software package including the printerdriver. One important feature of the present invention is that thefilters are separate software executable files from the printer driversoftware, which allows great flexibility for the user, as well as forthe printer manufacturer.

This invention may be conveniently implemented using a conventionalgeneral purpose digital computer or microprocessor programmed accordingto the teachings of the present specification, as will be apparent tothose skilled in the computer art. Appropriate software coding canreadily be prepared by skilled programmers based on the teachings of thepresent disclosure, as will be apparent to those skilled in the softwareart. The invention may also be implemented by the preparation ofapplication specific integrated circuits whereby interconnecting anappropriate network of conventional computer circuits, as will bereadily apparent to those skilled in the art.

Any portion of the present invention implemented on a general purposedigital computer or microprocessor includes a computer program productwhich is a storage medium including instructions which can be used toprogram a computer to perform a process of the invention. The storagemedium can include, but is not limited to, any type of disk includingfloppy disk, optical disk, CD-ROMs, and magneto-optical disks, ROMs,RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of mediasuitable for storing electronic instructions.

Obviously, numerous modifications and variations of the presentinvention are possible in light of the above teachings. It is thereforeto be understood that within the scope of the appended claims, theinvention may be practiced otherwise than as specifically describedherein.

1. A computer device comprising; a loading unit configured to load anupdatable stored print option from a predetermined storage unit; adisplay unit configured to display a user interface based on the loadedprint option; a receiving unit configured to receive an instruction froman operator via the user interface, wherein the instruction includes aselected print option; and an executing unit configured to execute theinstruction, wherein the executing unit is configured to apply theselected print option to data corresponding to an image forming device,and the display unit is configured to display a preview image of theselected print option being applied to the data.
 2. The computer deviceof claim 1, wherein the predetermined storage unit is disposed in thecomputer device.
 3. The computer device of claim 1, wherein the computerdevice is coupled to a server via a network, and the predeterminedstorage unit is disposed in the server.
 4. The computer device of claim1, wherein the computer device is coupled to an image forming device viaa network, and the predetermined storage unit is located in the imageforming device.
 5. The computer device of claim 1, wherein theupdateable stored print option is a filter that reads an input,transforms the input, and outputs the transformed input.
 6. The computerdevice of claim 1, wherein the execution unit is configured to apply theselected print option to data output from a driver of an image formingdevice.
 7. A method comprising; loading, at a computer device, anupdatable stored print option from a predetermined storage unit;displaying, at display device, a user interface based on the loadedprint option; receiving an instruction from an operator via a userinterface of the computer device, wherein the instruction includes aselected print option; executing, at the computer device, theinstruction by applying the selected print option to data correspondingto an image forming device; and displaying, at the display device, apreview image of the selected print option being applied to the data. 8.The method of claim 7, wherein the the loading includes loading theupdatable stored print option from the predetermined storage unitdisposed in the computer device.
 9. The method of claim 7, wherein the acomputer device is coupled to a server via a network, and the loadingincludes loading the updatable stored print option from thepredetermined storage unit disposed in the server.
 10. The method ofclaim 7, wherein the computer device is coupled to an image formingdevice via a network, and the loading includes loading the updatablestored print option from the predetermined storage unit disposed in theimage forming device.
 11. The method of claim 7, wherein the loadingincludes loading the updateable stored print option that is a filterthat reads an input, transforms the input, and outputs the transformedinput.
 12. The method of claim 7, wherein the executing includesapplying the selected print option to data output from a driver of animage forming device.
 13. A computer readable storage medium encodedwith instructions, which when executed by a computer device, causes thecomputer device to implement a method comprising; loading, at thecomputer device, an updatable stored print option from a predeterminedstorage unit; displaying, at display device, a user interface based onthe loaded print option; receiving an instruction from an operator via auser interface of the computer device, wherein the instruction includesa selected print option; executing, at the computer device, theinstruction by applying the selected print option to data correspondingto an image forming device; and displaying, at the display device, apreview image of the selected print option being applied to the data.14. The computer readable storage medium of claim 13, wherein theloading includes loading the updatable stored print option from thepredetermined storage unit disposed in the computer device.
 15. Thecomputer readable storage medium of claim 13, wherein the computerdevice is coupled to a server via a network, and the loading includesloading the updatable stored print option from the predetermined storageunit disposed in the server.
 16. The computer readable storage medium ofclaim 13, wherein the computer device is coupled to an image formingdevice via a network, and the loading includes loading the updatablestored print option from the predetermined storage unit disposed in theimage forming device.
 17. The computer readable storage medium of claim13, wherein the loading includes loading the updateable stored printoption that is a filter that reads an input, transforms the input, andoutputs the transformed input.